这里注释了runtime中相关的方法释义
后期遇到不认识的方法可在此查询其作用
类相关操作函数
1 |
|
实例相关操作函数
1 | // 返回指定对象的一份拷贝 |
属性操作相关函数
1 | // 获取属性名 |
方法操作相关函数
1 | // 调用指定方法的实现 |
选择器相关的操作函数
1 | // 返回给定选择器指定的方法的名称 |
协议相关的操作函数
1 | // 返回指定的协议 |
block块相关的操作函数
1 | // 创建一个指针函数的指针,该函数调用时会调用特定的block |
拦截调用函数
拦截调用就是在找不到调用的方法程序崩溃之前,有机会通过重写NSObject的四个方法来处理:
1 | + (BOOL)resolveClassMethod:(SEL)sel OBJC_AVAILABLE(10.5, 2.0, 9.0, 1.0, 2.0); |
调用一个不存在的类方法的时候,会调用这个方法,默认返回NO,可以加上自己的处理后返回YES
1 | + (BOOL)resolveInstanceMethod:(SEL)sel OBJC_AVAILABLE(10.5, 2.0, 9.0, 1.0, 2.0); |
和上一个方法类似,处理的是实例方法
1 | - (id)forwardingTargetForSelector:(SEL)aSelector OBJC_AVAILABLE(10.5, 2.0, 9.0, 1.0, 2.0); |
将你调用的不存在的方法重定向到一个其他声明了这个方法的类,只需要返回一个有这个方法的target
1 | - (void)forwardInvocation:(NSInvocation *)anInvocation OBJC_SWIFT_UNAVAILABLE(""); |
将你调用的不存在的方法打包成NSInvocation传给你。做完你自己的处理后,调用invokeWithTarget:方法让某个target触发这个方法